package com.yumeng.config.properties;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 *
 * @author wxd
 * @date 2025/10/10 16:38
 */
@Getter
@Setter
@ToString
@Component(YumengMybatisPlusProperties.DEFAULT_BEAN_NAME)
@ConfigurationProperties(prefix = "yumeng.mybatis-plus")
public class YumengMybatisPlusProperties {

    public static final String DEFAULT_BEAN_NAME = "YumengMybatisPlusProperties";

    //不使用mybatis-plus自带的逻辑删除机制，自己手动控制，更方便控制细节

    /**
     * 工作ID (0~31)
     */
    private Long workerId = -1L;
    /**
     * 数据中心ID (0~31)
     */
    private Long datacenterId = -1L;

    /**
     * 通用主键属性 用于不知道主键名称的场景，比如map传参
     */
    private String commKeyProp;
    /**
     * 通用主键集合属性 用于不知道主键名称的场景，比如map传参
     */
    private String commKeyProps;

    /**
     * 逻辑删除标记字段
     */
    private String logicDeleteField;
    /**
     * 逻辑删除标记属性
     */
    private String logicDeleteProp;

    /**
     * 逻辑删除标记值
     */
    private String logicDeleteVal;
    /**
     * 未逻辑删除标记值
     */
    private String unLogicDeleteVal;
    /**
     * 逻辑删除人（列名）
     */
    private String logicDeleterField;
    /**
     * 逻辑删除人（属性名）
     */
    private String logicDeleterProp;
    /**
     * 逻辑删除时间（列名）
     */
    private String logicDeleteTimeField;
    /**
     * 逻辑删除时间（属性名）
     */
    private String logicDeleteTimeProp;
    /**
     * 插件信息
     */
    private PluginsInfo plugins;


    @Getter
    @Setter
    public static class PluginsInfo{
        /**
         * 是否启用动态表名
         */
        private Boolean enableDynamicTableName=false;

        private Boolean enableTenant=false;
    }
}
